Networks transmitting voice calls, such as voice over packet networks, typically strive to maintain the voice quality of those calls. Quality of service (QoS) is thus a significant consideration for such networks. Interpacket delay variance, also referred to as jitter, is a difference between interpacket arrival and departure, which can affect voice quality and is thus a significant QoS metric in voice networks.
To function efficiently and economically, voice over packet networks and others typically strive to minimize bandwidth usage. Asynchronous transfer mode (ATM) networks dynamically allocate bandwidth. Various techniques are used with voice over packet networks to minimize bandwidth usage per call while maintaining perceptible voice quality. These techniques include compression, silence-suppression or voice activity detection (VAD), idle channel suppression (ICS) and others. For permanent virtual connections (PVC) associated with ATM adaptation layer 2 (AAL2), which packetizes voice data from serviced applications for the ATM network, sub-cell multiplexing comprises one such technique.
AAL2 sub-cell multiplexing is used to pack AAL2 packets, e.g., Common Part Sub-layer (CPS) packets, from the same or different channels of an AAL2 PVC into a single ATM cell. Such sub-cell multiplexing minimizes header overhead and maximizes bandwidth usage. In sub-cell multiplexing, each CPS packet is buffered until either an ATM cell containing the CPS packet gets filled, or a combined use timer (Timer_CU) associated with the multiplexer and signifying the most amount of time any CPS packet is buffered therein, expires.
The amount of time a CPS packet is buffered in a sub-cell multiplexer varies based on the number of channel identifiers (CIDs, e.g., channels) that are multiplexed, the number of those CIDs that are actively transmitting packets, the rate of packet transmission, and the packet sizes of each of those individual CIDs. A CID that is not transmitting packets could either be in silence-suppression (e.g., with VAD enabled), in ICS when enabled with channel associated signaling (CAS, e.g., transmission of signaling data within the voice channel), etc. Silence suppression occurs where there is a lack, pause, etc. in voice activity on the CID. ICS occurs based on idle CAS states such as when there is no call present on the CID.
With fewer CPS packets entering the multiplexer, each packet ends up being buffered for a larger amount of time before it is transmitted. This buffering-delay varies with silence patterns on calls that are already setup, and with activity such as call setup/teardown. Thus, each CPS packet can be delayed for less or more time than other such packets. Packet delay can vary at different times, from effectively zero, e.g., no delay, to a maximum delay set by the Timer_CU.
When a sizeable number of CIDs go into or come out of a state of no packet activity around the same time, this delay can have sudden and relatively significant variations. Such variations can contribute to jitter, because they affect the variation in delay experienced by CPS packets of an individual CID while they traverse the network and thus result in a variation of the inter-arrival times of those packets.
The end-to-end cumulative jitter experienced by packets has a ‘network jitter’ component caused by queuing in other network elements and a ‘multiplexing jitter’ component caused by the sub-cell multiplexer. The variation in network jitter is typically gradual. However, multiplexing jitter is typically sudden and can often be as large as the Timer_CU delay. While a larger Timer_CU delay may result in better bandwidth efficiency, it can cause a larger jitter and larger variance in jitter, which can impact QoS.
At the other end of the PVC, a de-multiplexer extracts individual CPS packets from arriving ATM cells. These de-multiplexed packets are then de-jittered at the jitter-buffers of the respective CIDs on which the packets arrived. Jitter-buffers are typically configured with an initial nominal jitter-delay that is greater than the worst-case jitter that is expected on the CID. Adaptive jitter-buffers adapt this nominal delay between the boundaries of the minimum jitter-delay and the maximum jitter-delay, according to the jitter observed in the arriving packets.
The nominal delay determines the average delay to which each packet in the jitter-buffer is subjected. The minimum jitter delay thus determines the least amount of delay contributed to the end-to-end delay by the jitter buffer, which is the lower bound of the nominal jitter-delay. Adaptive jitter-buffers adapt to changes in average jitter over the span of, e.g., several hundreds of arriving packets, as described in Equation 1 below. This is because the average jitter is calculated as a weighted moving average with a large averaging coefficient, in order to prevent the adaptation from being too sensitive to local fluctuations in network jitter.
                                                                        New                -                average                -                jitter                            =                            ⁢                              [                                                                            1                                                                                                                        ⁢                        W                                                              ⁢                                          (                                              Jitter                        -                        in                        -                        latest                        -                        packet                                            )                                                        +                                                                                                                      ⁢                                                                    (                                          W                      -                      1                                        )                                    W                                ⁢                                  (                                      Old                    ⁢                                          -                                        ⁢                    average                    ⁢                                          -                                        ⁢                    jitter                                    )                                            ]                                                          Equation        ⁢                                  ⁢        1            In equation 1, the averaging coefficient ‘W’ is typically 256 or 512.
Once the observed average jitter is calculated, the targeted nominal jitter delay is a multiple ‘M’ of the average jitter. Actual adjustment of the playout clock according to the nominal jitter-delay is typically accomplished immediately or during subsequent silence intervals.
Adaptive jitter buffers can thus be incapable of effectively (e.g., quickly) adapting to sudden changes in multiplexing jitter. This can cause significant packet dropping, e.g., during the period of slow adaptation when packets arriving with a new higher jitter, are determined to be late according to the playout clock and are dropped. On the other hand, early packets arriving with a new lower jitter continue to be subjected to longer than necessary delays in the jitter-buffer, thus increasing the average end-to-end delay. In addition, these early packets can potentially get dropped because of a jitter-buffer overflow.
To address packet dropping and unnecessarily long packet delays associated with the inability of conventional adaptive jitter buffers to quickly adapt to sudden multiplexing jitter changes, minimum jitter delay is configured higher than the sub-cell multiplexer Timer_CU setting. While it prevents the jitter-buffer from adapting lower than the worst-case multiplexing jitter, this approach can add jitter buffering delay even where unnecessary. The approach adds a minimum end-to-end delay determined by the Timer_CU to all CIDs even under the best circumstances.
For instance, the Timer_CU delay may be unnecessary, such as with a large number of calls setup on the PVC's CIDs during peak or other high traffic calling times. Another such instance may be where a large number of those calls are in packet activity, such as when they are in the midst of voice-activity, fax/modem session, have no VAD enabled, or have VAD disabled.
Such unnecessary delay can occur because conventional so-called adaptive jitter buffers are not truly adaptive in the lower jitter range, e.g., where the multiplexing jitter is below the setting of the Timer_CU. Hence, the end-to-end delay contributed by conventional jitter buffers is rendered as high as the Timer_CU setting irrespective of the real-time jitter conditions, which can itself impact QoS, reduce network efficiency, waste network resources and/or raise communication costs.
Thus conventionally, maximizing bandwidth efficiency with sub-cell multiplexing is balanced against added multiplexing and post-de-multiplexing jitter buffering contributes to end-to-end delay. Multiplexing jitter and delays associated with de-multiplexing jitter buffering can both impact perceptible voice quality. Multiplexing jitter can vary suddenly, depending on packet activity on the channels that are multiplexed. Conventional de-multiplexing adaptive jitter buffers on each channel can be incapable of adapting to such sudden variations in jitter quickly enough to adequately preserve voice quality. Further, the conventional approach to these issues can add unnecessary packet delay, which can concomitantly impact QoS, efficiency and economics.